/* 判断两个二叉树是否相似（指都为空或者都只有一个根节点，或者左右子树都相似）*/
#include <iostream>
#include "BiTreefun.h"
using namespace std;

// 判断两个二叉树是否相似
int fun(BTNode *T1, BTNode *T2)
{
  int left, right;
  
  // 如果两个二叉树都为空
  if (T1 == NULL && T2 == NULL)
    return 1;
  
  // 只有一个二叉树为空
  if (T1 == NULL || T2 == NULL)
    return 0;
  
  // 两个二叉树都不为空
  else
  {
    // 判断左子树是否相似
    left = fun(T1->lchild, T2->lchild);
    
    // 判断右子树是否相似
    right = fun(T1->rchild, T2->rchild);
    
    // 判断该二叉树是否相似
    return left && right;
  }
}

int main()
{
  // 创建两个二叉树
  BTNode *p = create_bitree();
  BTNode *q = create_bitree();
  
  // 判断两个二叉树是否相似
  cout << fun(p, q) << endl;
}